/**
 * 
 */
package br.com.sistransporte.transiteviewstruts.modulo.tabelahorario.action_form;

import java.util.ArrayList;
import java.util.Iterator;

import org.apache.struts.action.ActionForm;
import org.apache.struts.util.LabelValueBean;

import br.com.sistransporte.transite.diasemana.controller.DiaSemanaFacade;
import br.com.sistransporte.transite.evento.controller.EventoFacade;
import br.com.sistransporte.transite.horario.controller.HorarioFacade;
import br.com.sistransporte.transitedto.diasemana.DiaSemanaDTO;
import br.com.sistransporte.transitedto.evento.EventoDTO;
import br.com.sistransporte.transitedto.horario.HorarioDTO;
import br.com.sistransporte.transitedto.tabelahorario.TabelaHorarioDTO;
import br.com.src.dto.abstractdto.AbstractDTO;
import br.com.src.dto.requisicao_retorno.RequisicaoServico;
import br.com.src.dto.requisicao_retorno.RetornoServico;
import br.com.src.utilidades.Utilidades;

/**
 * @author Bruno Pelogia
 *
 */
public class TabelaHorarioForm extends ActionForm {

	/**
	 * 
	 */
	private static final long serialVersionUID = 1L;
	
	private TabelaHorarioDTO tabelaHorario;
	private HorarioDTO horario;
	private ArrayList<HorarioDTO> listaDeHorarios = new ArrayList<HorarioDTO>();
	

	/**
	 * @return the horario
	 */
	public final TabelaHorarioDTO getTabelaHorario() {
		return tabelaHorario;
	}

	/**
	 * @param tabelaHorario the tabelaHorario to set
	 */
	public final void setTabelaHorario(TabelaHorarioDTO tabelaHorario) {
		this.tabelaHorario = tabelaHorario;
	}
	
	/**
	 * @return the horario
	 */
	public final HorarioDTO getHorario() {
		if(horario == null){
			horario = new HorarioDTO();
		}
		return horario;
	}

	/**
	 * @param horario the horario to set
	 */
	public final void setHorario(HorarioDTO horario) {
		this.horario = horario;
	}
	
	
	/**
	 * @return the listaDeHorarios
	 */
	public final ArrayList<HorarioDTO> getListaDeHorarios() {
		return listaDeHorarios;
	}

	/**
	 * @param listaDeHorarios the listaDeHorarios to set
	 */
	public final void setListaDeHorarios(ArrayList<HorarioDTO> listaDeHorarios) {
		this.listaDeHorarios = listaDeHorarios;
	}

	public void limparFormulario(){
		setTabelaHorario( new TabelaHorarioDTO() );
	}
	
	
	
	public ArrayList< LabelValueBean > getComboDiaSemana() throws Throwable {
		ArrayList< LabelValueBean > listaDiaSemana = new ArrayList< LabelValueBean >();
		try {
			DiaSemanaDTO diaSemanaPesquisa = new DiaSemanaDTO();

			RequisicaoServico requisicaoServico = new RequisicaoServico( "Teste", diaSemanaPesquisa );
			RetornoServico retorno = DiaSemanaFacade.getInstance().filtrar( requisicaoServico );
			
			if ( !Utilidades.isNuloOuVazio( retorno.erro ) ) {
				throw retorno.erro;
			}
						
			ArrayList< AbstractDTO > diaSemanaEncontrados = retorno.getDtosRetorno();
			Iterator< AbstractDTO > setIter = diaSemanaEncontrados.iterator();
			
			LabelValueBean lvb = new LabelValueBean();
			lvb.setLabel( "Selecione..." );
			listaDiaSemana.add( lvb );
			
			while ( setIter.hasNext() ) {
				DiaSemanaDTO diaSemana = (DiaSemanaDTO) setIter.next();
				lvb = new LabelValueBean();
				lvb.setLabel( diaSemana.getNome());
				lvb.setValue( diaSemana.getId().toString() );

				listaDiaSemana.add( lvb );
			}

		} catch ( Exception e ) {
			e.printStackTrace();
		}
		return listaDiaSemana;
	}
	
	public ArrayList< LabelValueBean > getComboEvento() throws Throwable {
		ArrayList< LabelValueBean > listaEvento = new ArrayList< LabelValueBean >();
		try {
			EventoDTO eventoPesquisa = new EventoDTO();

			RequisicaoServico requisicaoServico = new RequisicaoServico( "Teste", eventoPesquisa );
			RetornoServico retorno = EventoFacade.getInstance().filtrar( requisicaoServico );
			
			if ( !Utilidades.isNuloOuVazio( retorno.erro ) ) {
				throw retorno.erro;
			}
						
			ArrayList< AbstractDTO > eventosEncontrados = retorno.getDtosRetorno();
			Iterator< AbstractDTO > setIter = eventosEncontrados.iterator();
			
			LabelValueBean lvb = new LabelValueBean();
			lvb.setLabel( "Selecione..." );
			lvb.setValue(null);
			listaEvento.add( lvb );
			
			while ( setIter.hasNext() ) {
				EventoDTO evento = (EventoDTO) setIter.next();
				lvb = new LabelValueBean();
				lvb.setLabel( evento.getDescricao());
				lvb.setValue( evento.getId().toString() );

				listaEvento.add( lvb );
			}

		} catch ( Exception e ) {
			e.printStackTrace();
		}
		return listaEvento;
	}
	
	public ArrayList< LabelValueBean > getComboHorario() throws Throwable {
		ArrayList< LabelValueBean > listaHorario = new ArrayList< LabelValueBean >();
		try {
			HorarioDTO horarioPesquisa = new HorarioDTO();

			RequisicaoServico requisicaoServico = new RequisicaoServico( "Teste", horarioPesquisa );
			RetornoServico retorno = HorarioFacade.getInstance().filtrar( requisicaoServico );
			
			if ( !Utilidades.isNuloOuVazio( retorno.erro ) ) {
				throw retorno.erro;
			}
						
			ArrayList< AbstractDTO > horariosEncontrados = retorno.getDtosRetorno();
			Iterator< AbstractDTO > setIter = horariosEncontrados.iterator();
			
			LabelValueBean lvb = new LabelValueBean();
			lvb.setLabel( "Selecione..." );
			listaHorario.add( lvb );
			
			while ( setIter.hasNext() ) {
				HorarioDTO horario = (HorarioDTO) setIter.next();
				lvb = new LabelValueBean();
				lvb.setLabel( horario.getHorario());
				lvb.setValue( horario.getId().toString() );

				listaHorario.add( lvb );
			}

		} catch ( Exception e ) {
			e.printStackTrace();
		}
		return listaHorario;
	}
	
}
